﻿#include "bsp_dma.h"

/**
 *****************************************************************************
 ** \brief DMA 初始化
 **
 **
 ** \param 1 :TrigSRC：源地址 2:数据buff指针 3：目的地址 
 ** 
 ** \retval void                                  
 *****************************************************************************/
void BSP_DMA_Init(en_dma_trig_sel_t TrigSRC, uint8_t *src_Buf,uint32_t dst_Buf)
{
    stc_dma_cfg_t stcDmaCfg;
    DDL_ZERO_STRUCT(stcDmaCfg);                                //初始化变量
    Sysctrl_SetPeripheralGate(SysctrlPeripheralDma,TRUE);      //使能DMAC外设时钟门控开关 
        
    DDL_ZERO_STRUCT(stcDmaCfg);                                //初始化变量      
    //tx dma配置
    stcDmaCfg.u32SrcAddress = (uint32_t)&src_Buf[0];          //接收数据缓存
    stcDmaCfg.u32DstAddress = (uint32_t)dst_Buf;              //发送数据寄存器地址
    stcDmaCfg.enSrcAddrReloadCtl = DmaMskSrcAddrReloadEnable;  //使能DMA源地址重载
    stcDmaCfg.enSrcBcTcReloadCtl = DmaMskBcTcReloadEnable;     //使能BC[3:0]和CONFA:TC[15:0]的重载功能
    stcDmaCfg.enDestAddrReloadCtl = DmaMskDstAddrReloadEnable; //使能DMA目的地址重载
    stcDmaCfg.enTransferMode = DmaMskOneTransfer;              //一次传输，DMAC传输完成时清除CONFA:ENS位
    stcDmaCfg.enDstAddrMode = DmaMskDstAddrFix;                //目的地址固定
    stcDmaCfg.enSrcAddrMode = DmaMskSrcAddrInc;                //源地址自增
    stcDmaCfg.u16BlockSize = 1;                                //块传输个数
    stcDmaCfg.u16TransferCnt = 5;                              //块传输次数，一次传输一个字节，传输两次
    stcDmaCfg.enMode = DmaMskBlock;                            //块(Block)传输
    stcDmaCfg.enTransferWidth = DmaMsk8Bit;                    //8 bit字节传输
		
	stcDmaCfg.enRequestNum = TrigSRC;            			   //DMA串口BUF空中断	

    stcDmaCfg.enPriority = DmaMskPriorityFix;                  //DMA 各通道优先级固定 (CH0>CH1)		
    Dma_InitChannel(DmaCh0, &stcDmaCfg);                       //DMA通道0初始化
	Dma_DisableChannel(DmaCh0);                                //禁用通道0 防止一打开DMA 就发00000 wu'ma
	Dma_Enable();                                              //DMA模块使能
}
